#ifndef __INCLUDED_UUT_DEF_H_
#define __INCLUDED_UUT_DEF_H_

#define UUT_START	namespace uut{
#define UUT_END		};//uut
#define USING_UUT	using namespace uut;
#define UUT			uut

//////////////////////////////////////////////////////////////////////////
// we depends on below C/C++ libraries:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <string>
#include <vector>
#include <map>
#include <set>
#include <iostream>
#include <tchar.h>

UUT_START

//////////////////////////////////////////////////////////////////////////
// foundation type definitions

typedef char UUTInt8;
typedef unsigned char UUTUInt8;
typedef short UUTInt16;
typedef unsigned short UUTUInt16;
typedef int UUTInt32;
typedef unsigned int UUTUInt32;

typedef UUTUInt32 UUTBool;
#define UUTTrue 1
#define UUTFalse 0

typedef UUTUInt8	UUTByte;
typedef UUTUInt32	UUTSize;
typedef UUTUInt32	UUTResult;
typedef void*		UUTUniPointer;

typedef std::string UUTString;
typedef std::wstring UUTWString;
typedef char UUTChar;
typedef unsigned short UUTWChar;

#if (defined UNICODE) || (defined _UNICODE)
typedef UUTWString UUTTString;
typedef UUTWChar UUTTChar;
#define UUTL(X)	L##X
#define UUTTCOut std::wcout
#else
typedef UUTString UUTTString;
typedef UUTChar UUTTChar;
#define UUTL(X)	X
#define UUTTCOut std::cout
#endif

//////////////////////////////////////////////////////////////////////////
// some util goes here
#define SafeDelete(X)					\
	do{									\
		if (X) { delete X; X= NULL;}	\
	}while(0)
#define DisalowCopyAssign(X)			\
	private:							\
		X(const X&);					\
		X& operator = (const X&);

UUT_END

#endif //endif __INCLUDED_UUT_DEF_H_